package org.example.dao;

import org.apache.ibatis.annotations.Mapper;
import org.example.domain.User;

import java.util.List;

@Mapper
public interface UserDao {

    /**
     * 增加：注册新账号
     */
    int insertUser(User user);


    /**
     * 修改：根据账号id，更新其对应的账号信息
     */
    int updateUserById(User user);


    /**
     * 物理删除：根据用户id 删除账号
     */
    int deleteUserById(Integer uid);


    /**
     * 逻辑删除：根据用户id 删除账号
     */
    int closeUserById(Integer uid);


    /**
     * 账号登录验证：
     * 根据用户名和密码查找对象
     */
    User selectUserByAccountAndPassword(User user);


    /**
     * 根据账号的模糊查询
     */
    List<User> selectUserLikeAccount(String account);


    /**
     * 根据用户名的模糊查询
     */
    List<User> selectUserLikeUsername(String username);


    /**
     * 根据所在部门的模糊查询
     */
    List<User> selectUserLikeDept(String dept);



    /**
     *根据账号id查找唯一对象
     */
    User selectUserById (Integer uid);


    /**
     * 根据账号查找唯一对象
     */
    User selectUserByAccount(String account);


    /**
     * 根据用户名查找多个对象
     */
    List<User> selectUserByUsername(String username);


    /**
     * 根据所属部门查找多个对象
     */
    List<User> selectUserByDept(String dept);


    /**
     * 根据角色身份查找多个对象
     */
    List<User> selectUserByRole(Integer role);


    /**
     * 根据账号状态查找多个对象
     */
    List<User> selectUserByStatus(Integer status);



    /**
     * 查询所有账号信息
     */
    List<User> selectAllUser();

}
